package com.lingyue.entity.module.biz.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 *
 * </p>
 *
 * @author deep
 * @since 2019-12-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("opportunities_follow")
@ApiModel(value = "OpportunitiesFollowEntity对象", description = "")
public class OpportunitiesFollowEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @JsonSerialize(using = ToStringSerializer.class)
    @TableId(value = "OPF_ID", type = IdType.ASSIGN_ID)
    private Long id;

    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("OPF_OPT_ID")
    private Long optId;

    @TableField("OPF_DEL_ID")
    private Long delId;

    @ApiModelProperty(value = "一级处理类型")
    @TableField("OPF_TYPE_FIRST")
    private String typeFirst;

    @ApiModelProperty(value = "二级处理类型")
    @TableField("OPF_TYPE_SECOND")
    private String typeSecond;

    @ApiModelProperty(value = "三级处理类型")
    @TableField("OPF_TYPE_OTHER")
    private String typeOther;

    @ApiModelProperty(value = "流失方向 (针对战败)")
    @TableField("OPF_LOSS_DIRECTION")
    private String lossDirection;

    @ApiModelProperty(value = "流失方向_详细信息")
    @TableField("OPF_LOSS_DIRECTION_SUB")
    private String lossDirectionSub;

    @ApiModelProperty(value = "线索归属人账号")
    @TableField("OPF_BELONG")
    private String belong;

    @ApiModelProperty(value = "建议处理人账号")
    @TableField("OPF_FOLLOWER_SUGGESTED")
    private String followerSuggested;

    @ApiModelProperty(value = "跟进人账号")
    @TableField("OPF_FOLLOWER")
    private String follower;

    @ApiModelProperty(value = "客户预约日期")
    @TableField("OPF_APPOINTMENT_DATE")
    private LocalDateTime appointmentDate;

    @ApiModelProperty(value = "客户到店日期")
    @TableField("OPF_RESCHEDULED_DATE")
    private LocalDateTime rescheduledDate;

    @ApiModelProperty(value = "0:未分配、7:未处理、10:客户预约、11:咨询专家、12:持续跟进、13:意向客户、14:二手车评估、20:客户拒绝、21:NSP拒绝、22:预约到店、23:非预约到店、24:金融成交、25:二手车成交、99:失效")
    @TableField("OPF_RESPONSE_STATUS")
    private Integer responseStatus;

    @ApiModelProperty(value = "处理日期")
    @TableField("OPF_RESPONSE_DATE")
    private LocalDateTime responseDate;

    @ApiModelProperty(value = "是否接通")
    @TableField("OPF_CONNECTED")
    private String connected;

    @ApiModelProperty(value = "意向车型")
    @TableField("OPF_PURPOSE_MODEL")
    private String purposeModel;

    @ApiModelProperty(value = "成交类型")
    @TableField("OPF_PURCHASE_TYPE")
    private String purchaseType;

    @ApiModelProperty(value = "部门")
    @TableField("OPF_DEPARTMENT")
    private String department;

    @ApiModelProperty(value = "联系方式: 微信/座机等,详见数据字典")
    @TableField("OPF_CONTACT_WAY")
    private String contactWay;

    @ApiModelProperty(value = "备注")
    @TableField("OPF_REMARK")
    private String remark;

    @ApiModelProperty(value = "是否最终状态：Y / NULL")
    @TableField("OPF_FINAL_STATUS")
    private String finalStatus;

    @TableField("OPF_CREATE_USER")
    private String createUser;

    @TableField("OPF_CREATE_DATE")
    private LocalDateTime createDate;

    @TableField("OPF_UPDATE_USER")
    private String updateUser;

    @TableField("OPF_UPDATE_DATE")
    private LocalDateTime updateDate;

    @ApiModelProperty(value = "Teleservice ticket id. Only present for tele service campaign.")
    @TableField("OPF_TICKET_ID")
    private String ticketId;

    @ApiModelProperty(value = "线索表leads_status")
    @TableField("OPF_LEADS_STATUS")
    private String leadsStatus;

    @ApiModelProperty(value = "活动操作事件代码")
    @TableField("OPF_EVENT_CODE")
    private String eventCode;

    @ApiModelProperty(value = "请求流水号")
    @TableField("OPF_REQUEST_NO")
    private String requestNo;

    @ApiModelProperty(value = "线索首次跟进标识：Y/N")
    @TableField("OPF_FIRST_FOLLOW")
    private String firstFollow;

    @ApiModelProperty(value = "预约类型：Y/N，预约/非预约")
    @TableField("OPF_APPOINTMENT_TYPE")
    private String appointmentType;


    public static final String OPF_ID = "OPF_ID";
    public static final String OPF_OPT_ID = "OPF_OPT_ID";
    public static final String OPF_DEL_ID = "OPF_DEL_ID";
    public static final String OPF_TYPE_FIRST = "OPF_TYPE_FIRST";
    public static final String OPF_TYPE_SECOND = "OPF_TYPE_SECOND";
    public static final String OPF_TYPE_OTHER = "OPF_TYPE_OTHER";
    public static final String OPF_LOSS_DIRECTION = "OPF_LOSS_DIRECTION";
    public static final String OPF_LOSS_DIRECTION_SUB = "OPF_LOSS_DIRECTION_SUB";
    public static final String OPF_BELONG = "OPF_BELONG";
    public static final String OPF_FOLLOWER_SUGGESTED = "OPF_FOLLOWER_SUGGESTED";
    public static final String OPF_FOLLOWER = "OPF_FOLLOWER";
    public static final String OPF_APPOINTMENT_DATE = "OPF_APPOINTMENT_DATE";
    public static final String OPF_RESCHEDULED_DATE = "OPF_RESCHEDULED_DATE";
    public static final String OPF_RESPONSE_STATUS = "OPF_RESPONSE_STATUS";
    public static final String OPF_RESPONSE_DATE = "OPF_RESPONSE_DATE";
    public static final String OPF_CONNECTED = "OPF_CONNECTED";
    public static final String OPF_PURPOSE_MODEL = "OPF_PURPOSE_MODEL";
    public static final String OPF_PURCHASE_TYPE = "OPF_PURCHASE_TYPE";
    public static final String OPF_DEPARTMENT = "OPF_DEPARTMENT";
    public static final String OPF_CONTACT_WAY = "OPF_CONTACT_WAY";
    public static final String OPF_REMARK = "OPF_REMARK";
    public static final String OPF_FINAL_STATUS = "OPF_FINAL_STATUS";
    public static final String OPF_CREATE_USER = "OPF_CREATE_USER";
    public static final String OPF_CREATE_DATE = "OPF_CREATE_DATE";
    public static final String OPF_UPDATE_USER = "OPF_UPDATE_USER";
    public static final String OPF_UPDATE_DATE = "OPF_UPDATE_DATE";
    public static final String OPF_TICKET_ID = "OPF_TICKET_ID";
    public static final String OPF_LEADS_STATUS = "OPF_LEADS_STATUS";
    public static final String OPF_EVENT_CODE = "OPF_EVENT_CODE";
    public static final String OPF_REQUEST_NO = "OPF_REQUEST_NO";
    public static final String OPF_FIRST_FOLLOW = "OPF_FIRST_FOLLOW";
    public static final String OPF_APPOINTMENT_TYPE = "OPF_APPOINTMENT_TYPE";
}
